package cn.edu.cdu.farmdeal.mapper;

import cn.edu.cdu.farmdeal.domain.Miaosha;
import cn.edu.cdu.farmdeal.domain.Product;
import cn.edu.cdu.farmdeal.domain.ProductExample;

import java.util.List;

import cn.edu.cdu.farmdeal.form.SuggestForm;
import cn.edu.cdu.farmdeal.utils.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

@Repository
@Mapper

public interface ProductMapper {
    List<Product> getMostSale();
    /**
     * 获得所有产品
     * @return
     */
    List<Product> getAllProduct();
    /**
     * 获取库存
     * @param id
     * @return
     */
    int getStock(int id);
    /**
     * 获取产品byid
     *
     * @param id
     * @return
     */
    Product getProById(int id);

    /**
     * 获取
     *
     * @param id
     * @return
     */
    List<Product> getShopHot(int id);

    /**
     * 获得shopid
     *
     * @param id
     * @return
     */
    int getShopId(int id);

    /**
     * 产品详情
     *
     * @param id
     * @return
     */
    Product getDetail(int id);

    /**
     * 总数
     *
     * @param inputvalue
     * @return
     */
    int getTotalCount(String inputvalue);

    /**
     * 搜索分页
     *
     * @param inputvalue
     * @param page
     * @return
     */
    List<Product> search(@Param("inputvalue") String inputvalue, @Param("page") Page page);

    /**
     * 获得热卖
     *
     * @return
     */
    List<Product> getHotSale();

    /**
     * 获得秒杀
     *
     * @return
     */
    List<Product> getMiaosha();

    /**
     * 查询建议
     *
     * @param InputValue
     * @return SuggestForm
     */
    List<SuggestForm> getSuggest(String InputValue);

    int countByExample(ProductExample example);

    int deleteByExample(ProductExample example);

    int deleteByPrimaryKey(Integer id);

    int insert(Product record);

    int insertSelective(Product record);

    List<Product> selectByExample(ProductExample example);

    Product selectByPrimaryKey(Integer id);

    int updateByExampleSelective(@Param("record") Product record, @Param("example") ProductExample example);

    int updateByExample(@Param("record") Product record, @Param("example") ProductExample example);

    int updateByPrimaryKeySelective(Product record);

    int updateByPrimaryKey(Product record);
}